Ch (computer programming)
In computing, Ch ( /ˌsiːˈeɪtʃ/) is a proprietary cross-platform C and C++ interpreter originally designed by Dr. Harry H. Cheng as a scripting language for beginners to learn math, computing, numerics, and programming in C/C++. Ch is now developed and marketed by SoftIntegration, Inc.; a student edition is freely available.
Ch is written in C and runs under Microsoft Windows, Linux, Mac OS X, FreeBSD, AIX, Solaris, QNX and HP-UX. It supports C90 and major C99 features, but it does not support the full set of C++ features. C99 complex number, IEEE-754 floating-point arithmetic, VLA features were supported in Ch before they became part of the C99 standard.[1][2][3][4] Among C based virtual machines, Ch is best in its functionality and third-party libraries in rivaling with java, according to CRN Test Center engineers.[5]
Ch is now used and integrated into curriculum by many universities and schools for learning computing and programming in C/C++.[6][7][8][9][10][11]
Ch can also be run as an interactive shell to execute C statement, C script file, Unix commands, and Windows commands (under windows only).[12]
Features
Ch supports the 1999 ISO C Standard (C99) and C++ classes. It is a superset of C with C++ classes. C99 major features such as complex numbers, variable length arrays (VLAs), IEEE-754 floating-point arithmetic and generic mathematical functions are supported. Wide characters in Addendum 1 for C90 is also supported.
The following C++ features are available in Ch:
- Member function
- Mixed code and declaration
- The this-> pointer
- Reference type and pass-by-reference
- Function-style type conversion
- Class
- private/public data and functions in class. Ch is compatible with C++ that by default, members of a class definition are assumed to be private until a 'public' declaration is given
- Static member of class/struct/union
- Const member functions
- The new and delete operators
- Constructors and destructors
- Polymorphic functions
- The scope resolution operator ::
- The I/O cout, cerr, cin with endl
- Arguments for variadic functions are optional
Ch supports classes in C++ with the following additional capabilities:
- Classes inside member functions
- Nested functions with classes
- Pass member function to argument of pointer-to-function type of functions
Ch can interface with existing C/C++ libraries and call C/C++ functions from Ch script.[13] As a C/C++ interpreter, Ch can be used as a scripting engine for your applications. The pointer to array or variables can be passed and shared in both binary C space and ch scripting space. It extends your applications with a C compatible scripting language. One of the embedded ch scripting application is Mobile-C. Mobile-C has been used for collaborative visualization of distributed mesh model.[14][15] [16]
Ch is a C language shell and can be used as login shell. Ch has a built-in string type (string_t) for automatic memory allocation and de-allocation. It makes C/C++ easy of scripting. It supports shell alias, history, piping, etc.[17][18]
Ch has built-in 2D/3D graphical plotting features and computational arrays for numerical computing. A 2D linear equation of the form b = A*x can be written verbatim in Ch.[19]
See also
References
- ^ Cheng, Harry (1993). "Handling of Complex Numbers in the Ch Programming Language". Scientific Programming: 76–106. http://iospress.metapress.com/content/xml874m51x1w42w0/.
- ^ Cheng, Harry (1993). Scientific Computing in the Ch Programming Language. Scientific Programming. pp. 49–75. http://iospress.metapress.com/content/f225771541203807/.
- ^ Cheng, Harry (1995). Extending C and FORTRAN for Design Automation. ASME Trans., Journal of Mechanical Design. pp. 390–395. http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=JMDEDB000117000003000390000001&idtype=cvips&gifs=yes&ref=no.
- ^ Cheng, Harry (1995). Extending C with arrays of variable length. Computer Standards & Interfaces. pp. 375–406. doi:10.1016/0920-5489(95)00007-H. http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TYV-3Y6PCHF-V&_user=10&_coverDate=09%2F15%2F1995&_alid=1737140035&_rdoc=1&_fmt=high&_orig=search&_origin=search&_zone=rslt_list_item&_cdi=5628&_sort=r&_st=13&_docanchor=&view=c&_ct=1&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=1369ffa56fdef3033135fa8fc1eb4c15&searchtype=a.
- ^ Morejon, Mario (2006). Ch Language Rivals Java Functionality. CRN. http://www.crn.com/reviews/applications-os/175804126/ch-language-rivals-java-functionality.htm.
- ^ Cheng, Harry (2009). C for the Course. ASME Mechanical Engineering Magazine. pp. 50–52. http://memagazine.asme.org/Articles/2009/september/C_Course.cfm.
- ^ Huber, Tom (2010). An Introduction to C and Ch: Your One-Stop Shop for Scientific Computing. IEEE Computing in Science and Engineering. doi:10.1109/MCSE.2010.82. http://www.computer.org/portal/web/csdl/doi/10.1109/MCSE.2010.82.
- ^ Liu, Li; Wang, Zhaoqing; Jiang, Xusheng (2010). Anchor-based programming teaching embedded with Ch platform. Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference. pp. 49–52. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5552033.
- ^ Furman, B.; Wertz, E. (2010). A first course in computer programming for mechanical engineers. Mechatronics and Embedded Systems and Applications (MESA), IEEE/ASME International Conference. pp. 70–75. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&arnumber=5552091.
- ^ ZHUANG, Hong; WANG, Zhao-qing (2009). Experience of Using Ch for Teaching Computer Programming in C. Computer Education. pp. TP311.11–4. doi:CNKI:SUN:JYJS.0.2009-07-016. http://en.cnki.com.cn/Article_en/CJFDTOTAL-JYJS200907016.htm.
- ^ WANG, RONG (2009). Study of C Language Programming Teaching Method on platform Ch. Journal of Weinan Teachers University. pp. TP312.1–4. doi:CNKI:SUN:WOLF.0.2009-05-018. http://en.cnki.com.cn/Article_en/CJFDTOTAL-WOLF200905018.htm.
- ^ Wang, Gary (2002). Ch Solves Portability Headaches. IEEE Spectrum. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1049264.
- ^ Wilson, Matthew (2004). Open-RJ and Ch. Dr. Dobb's Journal. http://drdobbs.com/184401877?queryText=ChSDK.
- ^ Cheng, Harry (2009). Speeding-Up Software Development Using Embedded Scripting. Dr. Dobb's Journal. pp. 8-8. http://drdobbs.com/architecture-and-design/212201774.
- ^ Wang, Li-rong; Bo, Yo; Hagiwara, I. Mobile-C based agent management for collaborative visualization of distributed mesh model. Computer-Aided Industrial Design & Conceptual Design, 2009. CAID & CD 2009. IEEE 10th International Conference. http://ieeexplore.ieee.org/search/freesrchabstract.jsp?tp=&arnumber=5375178&queryText%3DMobile-C%26openedRefinements%3D*%26searchField%3DSearch+All.
- ^ Wang, Li-rong; Bo, Yo; Hagiwara, Ichiro (2009). An agent based collaborative simplification of 3D mesh model. CDVE'09 Proceedings of the 6th international conference on Cooperative design, visualization, and engineering. http://dl.acm.org/citation.cfm?id=1813032.
- ^ Campbell, Matt (2003). Ch, A C/C++ Interpreter -- New possibilities for people who like C and Unix. MACTECH, the journal of Apple technology. http://www.mactech.com/articles/mactech/Vol.19/19.09/CInterpreter/index.html.
- ^ Cheng, Harry (2010). The Ch Language Environment (6.3 ed.). Davis, CA: SoftIntegration, Inc..
- ^ Glassborow, Francis (2001). The Ch Language Environment Version 2.0. C Vu Magazine. pp. 36–37. http://www.softintegration.com/company/pub/accu.html.
Further reading
External links